home *** CD-ROM | disk | FTP | other *** search
- package org.apache.xalan.xslt;
-
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.OutputStream;
- import java.io.OutputStreamWriter;
- import java.io.Serializable;
- import java.io.UnsupportedEncodingException;
- import java.io.Writer;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.Enumeration;
- import java.util.Stack;
- import java.util.StringTokenizer;
- import java.util.TooManyListenersException;
- import java.util.Vector;
- import org.apache.xalan.xpath.ExtensionFunctionHandler;
- import org.apache.xalan.xpath.dtm.DTMLiaison;
- import org.apache.xalan.xpath.xml.FormatterToDOM;
- import org.apache.xalan.xpath.xml.FormatterToHTML;
- import org.apache.xalan.xpath.xml.FormatterToText;
- import org.apache.xalan.xpath.xml.FormatterToXML;
- import org.apache.xalan.xpath.xml.MutableAttrListImpl;
- import org.apache.xalan.xpath.xml.QName;
- import org.apache.xalan.xpath.xml.XSLMessages;
- import org.apache.xalan.xslt.trace.SelectionEvent;
- import org.apache.xalan.xslt.trace.TraceListener;
- import org.apache.xalan.xslt.trace.TracerEvent;
- import org.apache.xml.serialize.OutputFormat;
- import org.apache.xml.serialize.XMLSerializer;
- import org.w3c.dom.Document;
- import org.w3c.dom.DocumentFragment;
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
- import org.xml.sax.AttributeList;
- import org.xml.sax.DocumentHandler;
- import org.xml.sax.SAXException;
-
- public class StylesheetRoot extends Stylesheet implements Serializable {
- String m_resultNameSpaceURL;
- transient Vector m_traceListeners;
- static final String DEFAULT_ENCODING = "UTF-8";
- String m_liaisonClassUsedToCreate;
- public boolean m_useXercesSerializers = false;
- String m_outputmethod;
- String m_version;
- boolean m_indentResult = false;
- String m_encoding;
- String m_mediatype;
- String m_doctypeSystem;
- String m_doctypePublic;
- boolean m_omitxmlDecl = false;
- boolean m_standalone = false;
- QName[] m_cdataSectionElems;
- transient Stack m_importStack;
- public ElemTemplate m_defaultTextRule;
- public ElemTemplate m_defaultRule;
- public ElemTemplate m_defaultRootRule;
-
- private void readObject(ObjectInputStream var1) throws IOException, SAXException {
- try {
- var1.defaultReadObject();
- } catch (ClassNotFoundException var3) {
- throw new XSLProcessorException(var3);
- }
-
- this.m_traceListeners = null;
- }
-
- public void addTraceListener(TraceListener var1) throws TooManyListenersException {
- if (this.m_traceListeners == null) {
- this.m_traceListeners = new Vector();
- }
-
- this.m_traceListeners.addElement(var1);
- }
-
- public void removeTraceListener(TraceListener var1) {
- if (this.m_traceListeners != null) {
- this.m_traceListeners.removeElement(var1);
- }
-
- }
-
- void fireTraceEvent(TracerEvent var1) {
- if (this.m_traceListeners != null) {
- int var2 = this.m_traceListeners.size();
-
- for(int var3 = 0; var3 < var2; ++var3) {
- TraceListener var4 = (TraceListener)this.m_traceListeners.elementAt(var3);
- var4.trace(var1);
- }
- }
-
- }
-
- void fireSelectedEvent(SelectionEvent var1) throws SAXException {
- if (this.m_traceListeners != null) {
- int var2 = this.m_traceListeners.size();
-
- for(int var3 = 0; var3 < var2; ++var3) {
- TraceListener var4 = (TraceListener)this.m_traceListeners.elementAt(var3);
- var4.selected(var1);
- }
- }
-
- }
-
- public StylesheetRoot(XSLTEngineImpl var1, String var2) throws XSLProcessorException, MalformedURLException, FileNotFoundException, IOException, SAXException {
- super((StylesheetRoot)null, var1, var2);
- }
-
- protected void init(XSLTEngineImpl var1) throws XSLProcessorException, MalformedURLException, FileNotFoundException, IOException, SAXException {
- this.m_liaisonClassUsedToCreate = var1.getXMLProcessorLiaison().getClass().getName();
- this.m_importStack = new Stack();
- if (super.m_baseIdent == null) {
- super.m_baseIdent = "";
- }
-
- URL var2 = var1.getURLFromString(super.m_baseIdent, (String)null);
- super.m_baseIdent = var2.toExternalForm();
- this.m_importStack.push(var1.getURLFromString(super.m_baseIdent, (String)null));
- super.m_stylesheetRoot = this;
- super.init(var1);
- }
-
- public OutputFormat getOutputFormat() {
- OutputFormat var1 = new OutputFormat(this.getOutputMethod(), this.getOutputEncoding(), this.getOutputIndent());
- var1.setDoctype(this.getOutputDoctypePublic(), this.getOutputDoctypeSystem());
- var1.setOmitXMLDeclaration(this.getOmitOutputXMLDecl());
- var1.setStandalone(this.getOutputStandalone());
- var1.setMediaType(this.getOutputMediaType());
- var1.setVersion(this.getOutputVersion());
- if (this.getOutputIndent()) {
- var1.setIndent(var1.getIndent() + 1);
- }
-
- return var1;
- }
-
- public void process(XSLTInputSource var1, XSLTResultTarget var2) throws SAXException, MalformedURLException, FileNotFoundException, IOException {
- XSLTProcessor var10000;
- if (this.m_liaisonClassUsedToCreate != null) {
- new XSLTProcessorFactory();
- var10000 = XSLTProcessorFactory.getProcessorUsingLiaisonName(this.m_liaisonClassUsedToCreate);
- } else {
- new XSLTProcessorFactory();
- var10000 = XSLTProcessorFactory.getProcessor();
- }
-
- XSLTProcessor var3 = var10000;
- this.process(var3, var3.getSourceTreeFromInput(var1), var2);
- }
-
- public void process(XSLTProcessor var1, XSLTInputSource var2, XSLTResultTarget var3) throws SAXException, MalformedURLException, FileNotFoundException, IOException {
- this.process(var1, var1.getSourceTreeFromInput(var2), var3);
- }
-
- public void process(XSLTProcessor var1, Node var2, XSLTResultTarget var3) throws SAXException, MalformedURLException, FileNotFoundException, IOException {
- XSLTEngineImpl var4 = (XSLTEngineImpl)var1;
- synchronized(var4){}
-
- try {
- var4.switchLiaisonsIfNeeded(var2, var3.getNode());
- var4.m_stylesheetRoot = this;
- FileOutputStream var7 = null;
-
- try {
- var4.getXMLProcessorLiaison().checkNode(var2);
- Enumeration var10 = super.m_extensionNamespaces.keys();
-
- while(var10.hasMoreElements()) {
- Object var11 = var10.nextElement();
- var4.getExecContext().addExtensionNamespace((String)var11, (ExtensionFunctionHandler)super.m_extensionNamespaces.get(var11));
- }
-
- ElemTemplate var24 = ((Stylesheet)this).findTemplate(var4, var2, var2);
- if (var24 == null) {
- var24 = this.m_defaultRootRule;
- }
-
- DocumentHandler var12 = var3.getDocumentHandler();
- OutputFormat var13 = this.getOutputFormat();
- if (var3.getEncoding() != null) {
- var13.setEncoding(var3.getEncoding());
- }
-
- if (var12 != null) {
- var4.m_flistener = var12;
- } else if (var3.getByteStream() != null) {
- if (var4.m_parserLiaison.getIndent() >= 0) {
- var13.setIndent(var4.m_parserLiaison.getIndent() + 1);
- }
-
- var4.m_flistener = this.makeSAXSerializer(var3.getByteStream(), var13);
- } else if (var3.getCharacterStream() != null) {
- if (var4.m_parserLiaison.getIndent() >= 0) {
- var13.setIndent(var4.m_parserLiaison.getIndent() + 1);
- }
-
- var4.m_flistener = this.makeSAXSerializer(var3.getCharacterStream(), var13);
- } else if (var3.getFileName() != null) {
- if (var4.m_parserLiaison.getIndent() >= 0) {
- var13.setIndent(var4.m_parserLiaison.getIndent() + 1);
- }
-
- var7 = new FileOutputStream(var3.getFileName());
- var4.m_flistener = this.makeSAXSerializer((OutputStream)var7, var13);
- } else if (var3.getNode() != null) {
- if (var4.getXMLProcessorLiaison() instanceof DTMLiaison) {
- var4.error(96);
- }
-
- switch (var3.getNode().getNodeType()) {
- case 1:
- var4.m_flistener = new FormatterToDOM(var4.m_parserLiaison.createDocument(), (Element)var3.getNode());
- break;
- case 9:
- var4.m_flistener = new FormatterToDOM((Document)var3.getNode());
- break;
- case 11:
- var4.m_flistener = new FormatterToDOM(var4.m_parserLiaison.createDocument(), (DocumentFragment)var3.getNode());
- break;
- default:
- ((UnImplNode)this).error(43);
- }
- } else {
- var3.setNode(var4.m_parserLiaison.createDocument());
- var4.m_flistener = new FormatterToDOM((Document)var3.getNode());
- }
-
- var4.resetCurrentState(var2);
- var4.m_rootDoc = var2;
- if (var4.m_diagnosticsPrintWriter != null) {
- var4.diag("=============================");
- var4.diag("Transforming...");
- var4.pushTime(var2);
- }
-
- var4.getVarStack().pushContextMarker();
-
- try {
- var4.resolveTopLevelParams();
- } catch (Exception var21) {
- throw new SAXException(XSLMessages.createMessage(44, (Object[])null), var21);
- }
-
- var4.m_resultTreeHandler.startDocument();
- var24.execute(var4, var2, var2, (QName)null);
- var4.m_resultTreeHandler.endDocument();
- var4.m_topLevelParams = new Vector();
- if (var4.m_diagnosticsPrintWriter != null) {
- var4.displayDuration("transform", var2);
- }
- } finally {
- if (var7 != null) {
- ((OutputStream)var7).close();
- }
-
- }
- } catch (Throwable var23) {
- throw var23;
- }
-
- }
-
- public DocumentHandler makeSAXSerializer(Writer var1, OutputFormat var2) {
- Object var3;
- if (this.m_useXercesSerializers) {
- var3 = new XMLSerializer(var1, var2);
- } else if (var2 == null) {
- var2 = new OutputFormat("xml", "UTF-8", false);
- FormatterToXML var4 = new FormatterToXML();
- var4.init(var1, var2);
- var3 = var4;
- } else if (var2.getMethod().equalsIgnoreCase("html")) {
- FormatterToHTML var6 = new FormatterToHTML();
- ((FormatterToXML)var6).init(var1, var2);
- var3 = var6;
- } else if (var2.getMethod().equalsIgnoreCase("xml")) {
- FormatterToXML var7 = new FormatterToXML();
- var7.init(var1, var2);
- var3 = var7;
- } else if (var2.getMethod().equalsIgnoreCase("text")) {
- var3 = new FormatterToText(var1);
- } else if (var2.getMethod().equalsIgnoreCase("xhtml")) {
- var3 = new XMLSerializer(var1, var2);
- } else {
- var3 = new XMLSerializer(var1, var2);
- }
-
- return (DocumentHandler)var3;
- }
-
- public DocumentHandler getSAXSerializer(OutputStream var1) throws UnsupportedEncodingException {
- return this.makeSAXSerializer(var1, this.getOutputFormat());
- }
-
- public DocumentHandler makeSAXSerializer(OutputStream var1, OutputFormat var2) throws UnsupportedEncodingException {
- Object var3;
- if (this.m_useXercesSerializers) {
- var3 = new XMLSerializer(var1, var2);
- } else if (var2 == null) {
- var2 = new OutputFormat("xml", "UTF-8", false);
- FormatterToXML var4 = new FormatterToXML();
- var4.init(var1, var2);
- var3 = var4;
- } else if (var2.getMethod().equalsIgnoreCase("html")) {
- FormatterToHTML var9 = new FormatterToHTML();
- ((FormatterToXML)var9).init(var1, var2);
- var3 = var9;
- } else if (var2.getMethod().equalsIgnoreCase("xml")) {
- FormatterToXML var10 = new FormatterToXML();
- var10.init(var1, var2);
- var3 = var10;
- } else if (var2.getMethod().equalsIgnoreCase("text")) {
- String var11 = var2.getEncoding();
- if (var11 == null) {
- try {
- var11 = System.getProperty("file.encoding");
- var11 = var11 != null ? FormatterToXML.convertJava2MimeEncoding(var11) : "ASCII";
- if (var11 == null) {
- var11 = "ASCII";
- }
- } catch (SecurityException var7) {
- var11 = "ASCII";
- }
- }
-
- this.m_encoding = var11;
- String var5 = FormatterToXML.convertMime2JavaEncoding(var11);
- OutputStreamWriter var6 = new OutputStreamWriter(var1, var5);
- var3 = new FormatterToText(var6);
- } else if (var2.getMethod().equalsIgnoreCase("xhtml")) {
- var3 = new XMLSerializer(var1, var2);
- } else {
- var3 = new XMLSerializer(var1, var2);
- }
-
- return (DocumentHandler)var3;
- }
-
- public String getOutputMethod() {
- return this.m_outputmethod == null ? "xml" : this.m_outputmethod;
- }
-
- public boolean isOutputMethodSet() {
- return this.m_outputmethod != null;
- }
-
- public void setOutputMethod(String var1) {
- this.m_outputmethod = var1;
- }
-
- public String getOutputVersion() {
- return this.m_version;
- }
-
- public boolean getOutputIndent() {
- return this.m_indentResult;
- }
-
- public String getOutputEncoding() {
- return this.m_encoding;
- }
-
- public String getOutputMediaType() {
- return this.m_mediatype;
- }
-
- public String getOutputDoctypeSystem() {
- return this.m_doctypeSystem;
- }
-
- public String getOutputDoctypePublic() {
- return this.m_doctypePublic;
- }
-
- public boolean getOmitOutputXMLDecl() {
- return this.m_omitxmlDecl;
- }
-
- public boolean getOutputStandalone() {
- return this.m_standalone;
- }
-
- public QName[] getCDataSectionElems() {
- return this.m_cdataSectionElems;
- }
-
- void processOutputSpec(String var1, AttributeList var2) throws SAXException {
- int var3 = var2.getLength();
- boolean var4 = false;
-
- for(int var5 = 0; var5 < var3; ++var5) {
- String var6 = var2.getName(var5);
- if (var6.equals("method")) {
- this.m_outputmethod = var2.getValue(var5);
- } else if (var6.equals("version")) {
- this.m_version = var2.getValue(var5);
- } else if (var6.equals("indent")) {
- this.m_indentResult = ((Stylesheet)this).getYesOrNo(var6, var2.getValue(var5));
- var4 = true;
- } else if (var6.equals("encoding")) {
- this.m_encoding = var2.getValue(var5);
- } else if (var6.equals("media-type")) {
- this.m_mediatype = var2.getValue(var5);
- } else if (var6.equals("doctype-system")) {
- this.m_doctypeSystem = var2.getValue(var5);
- } else if (var6.equals("doctype-public")) {
- this.m_doctypePublic = var2.getValue(var5);
- } else if (var6.equals("omit-xml-declaration")) {
- this.m_omitxmlDecl = ((Stylesheet)this).getYesOrNo(var6, var2.getValue(var5));
- } else if (var6.equals("standalone")) {
- this.m_standalone = ((Stylesheet)this).getYesOrNo(var6, var2.getValue(var5));
- } else if (!var6.equals("cdata-section-elements")) {
- if (!((Stylesheet)this).isAttrOK(var6, var2, var5)) {
- throw new SAXException(XSLMessages.createMessage(2, new Object[]{var1, var6}));
- }
- } else {
- StringTokenizer var7 = new StringTokenizer(var2.getValue(var5));
- int var8 = var7.countTokens();
- int var9;
- if (this.m_cdataSectionElems == null) {
- this.m_cdataSectionElems = new QName[var8];
- var9 = 0;
- } else {
- QName[] var10 = this.m_cdataSectionElems;
- int var11 = var10.length;
- this.m_cdataSectionElems = new QName[var8 + var11];
-
- for(int var12 = 0; var12 < var11; ++var12) {
- this.m_cdataSectionElems[var12] = var10[var12];
- }
-
- var9 = var11;
- }
-
- while(var7.hasMoreTokens()) {
- String var13 = var7.nextToken();
- QName var14 = new QName(var13, super.m_namespaces);
- this.m_cdataSectionElems[var9] = var14;
- ++var9;
- }
- }
- }
-
- if (this.m_outputmethod != null && this.m_outputmethod.equals("html") && !var4) {
- this.m_indentResult = true;
- }
-
- }
-
- boolean isRoot() {
- return true;
- }
-
- void initDefaultRule() throws XSLProcessorException, SAXException {
- byte var1 = 0;
- byte var2 = 0;
- MutableAttrListImpl var3 = new MutableAttrListImpl();
- var3.addAttribute("match", "CDATA", "*");
- this.m_defaultRule = new ElemTemplate((XSLTEngineImpl)null, this, "xsl:template", var3, var1, var2);
- var3.clear();
- ElemApplyTemplates var4 = new ElemApplyTemplates((XSLTEngineImpl)null, this, "xsl:apply-templates", var3, var1, var2);
- var4.m_isDefaultTemplate = true;
- this.m_defaultRule.appendChild(var4);
- var3.clear();
- var3.addAttribute("match", "CDATA", "text() | @*");
- this.m_defaultTextRule = new ElemTemplate((XSLTEngineImpl)null, this, "xsl:template", var3, var1, var2);
- var3.clear();
- var3.addAttribute("select", "CDATA", ".");
- ElemValueOf var5 = new ElemValueOf((XSLTEngineImpl)null, this, "xsl:value-of", var3, var1, var2);
- this.m_defaultTextRule.appendChild(var5);
- var3.clear();
- var3.addAttribute("match", "CDATA", "/");
- this.m_defaultRootRule = new ElemTemplate((XSLTEngineImpl)null, this, "xsl:template", var3, var1, var2);
- var3.clear();
- var4 = new ElemApplyTemplates((XSLTEngineImpl)null, this, "xsl:apply-templates", var3, var1, var2);
- var4.m_isDefaultTemplate = true;
- this.m_defaultRootRule.appendChild(var4);
- }
- }
-